package com.sanploy.manage.mapper;

import com.sanploy.common.domain.Category;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * Created by zhu yingzhi on 2017/9/8.
 * @author yingzhi zhu
 * 分类数据库操作类
 */
@Mapper
public interface CategoryMapper {
    /**
     * 添加分类
     * @param category 分类实体
     * @return 数据库影响行数
     */
     int insertCategory(Category category);

    /**
     * 查找某分类下的下级分类 的最大pid分类
     * @param pid 分类pid
     * @return 分类实体
     */
     Category selectParentPidAtFirst(String pid);

    /**
     * 查找所有的分类
     * @return 分类实体集合
     */
    @Select(value = "select * from category ORDER BY sort_order desc")
     List<Category> selectAll();

    /**
     * 查找所有的分类
     * @return 分类实体集合
     */
    @Select(value = "select * from category WHERE is_show=1 ORDER BY sort_order desc")
     List<Category> mSelectAll();

    /**
     * 更新某个分类
     * @param name 分类名
     * @param sortOrder 排序
     * @param categoryDesc 分类描述
     * @param pid 分类pid
     * @return
     */
     @Update(value = "UPDATE category SET name=#{name},sort_order=#{sort_order},c_desc=#{c_desc} WHERE pid=#{pid}")
     int updateByPid(@Param("name") String name, @Param("sort_order") int sortOrder,
                     @Param("c_desc") String categoryDesc, @Param("pid") String pid);


    /**
     * 更新某个分类
     * @param isShow 是否展示
     * @param pid 分类pid
     * @return
     */
    @Update(value = "UPDATE category SET is_show=#{isShow} WHERE pid=#{pid}")
    int editIsShow(@Param("isShow") int isShow, @Param("pid") String pid);

    /**
     * 通过pid查找某分类下的子类
     * @param parentPid 父类pid
     * @return 分类实体集合
     */
     List<Category> selectByParentPid(String parentPid);

    /**
     * 通过pid查找某一个分类
     * @param pid 分类
     * @return 分类实体
     */
     Category selectOne(String pid);


}
